package com.orientation.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.orientation.dto.BatchBedDto;
import com.orientation.dto.BedChangeDto;
import com.orientation.entity.Bed;
import com.orientation.vo.BedMoveVo;
import com.orientation.vo.BedRoomStudentVo;
import com.orientation.vo.BedStudentVo;
import com.orientation.vo.StudentProgressVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 报到 服务类
 * </p>
 *
 * @author xuandian
 * @since 2022-3-9
 */
public interface BedService extends IService<Bed> {
    /**
     * 统计宿舍选取情况
     *
     * @return
     */

    StudentProgressVo progressBed(String collegeId);

    /**
     * 新增床位
     *
     * @param bed
     */
    void insertBed(@Param("bed") Bed bed);

    /**
     * 批量新增床位
     *
     * @param bedList
     */
    void insertBedBatch(@Param("bedList") List<Bed> bedList);

    /**
     * @param bedId
     * @return
     */
    BedStudentVo queryBed(@Param("bedId") String bedId);

    /**
     * @param roomId
     * @return
     */
    List<BedStudentVo> queryBedStudentList(@Param("roomId") String roomId);

    /**
     * 分配床位
     *
     * @param batchBedDto
     */
    void distributionBed(BatchBedDto batchBedDto);

    /**
     * h5 学生房间信息擦查询
     * @param studentId
     * @return
     */
    BedRoomStudentVo queryByStudentId(@Param("studentId") String studentId);

    /**
     *
     * @param files
     * @param names
     * @param roomId
     */
    void insertBedBatchFile(MultipartFile[] files, List<String> names, String roomId);

    /***
     *
     * @param pageNum
     * @param pageSize
     * @param majorId
     * @param className
     * @param studentName
     * @param sexType
     * @param adviserId
     * @return
     */
    IPage<BedMoveVo> queryBedMove(Integer pageNum, Integer pageSize, String majorId, String className, String studentName,String studentId, String sexType, String adviserId);

    /**
     * 床位交换
     * @param bedChangeDto
     */
    void distributionChangeBed(BedChangeDto bedChangeDto);
}
